package com.feri.fitness.us.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.feri.fitness.common.config.SystemConfig;
import com.feri.fitness.common.vo.R;
import com.feri.fitness.us.dao.UserPlusDao;
import com.feri.fitness.us.dao.UserWalletDao;
import com.feri.fitness.us.domain.UserPlus;
import com.feri.fitness.us.service.intf.UserPlusService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Calendar;
import java.util.Date;

/**
 * ━━━━━━神兽出没━━━━━━
 * 　　　┏┓　　　┏┓
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　　　　 ┃
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　  ┃
 * 　　┃　　　　　　 ┃
 * 　　┃　　　┻　　　┃
 * 　　┃　　　　　　　┃
 * 　　┗━┓　　　┏━┛Code is far away from bug with the animal protecting
 * 　　　　┃　　　┃    神兽保佑,代码无bug
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ━━━━━━永无BUG!━━━━━━
 *
 * @Description:
 * @Author: 邢朋辉
 * @Date: 2023/1/10 09:24
 */
@Service
public class UserPlusServiceImpl implements UserPlusService {
    @Resource
    private UserPlusDao dao;
    @Resource
    private UserWalletDao walletDao;


    @Override
    public int add(int uid, int type) {
        //1.验证
        if(type>0){
            //查询一下，校验
            UserPlus plus=dao.selectOne(new QueryWrapper<UserPlus>().eq("uid",uid));
            if(plus==null){
                //开通
                Calendar calendar =Calendar.getInstance();
                calendar.add(Calendar.DAY_OF_MONTH, SystemConfig.map.get(type));
                plus=new UserPlus(uid,new Date(),calendar.getTime(),SystemConfig.map.get(type));
                int r=dao.insert(plus);
                //返回
                return r;
            }
        }
        return 0;
    }

    @Override
    public int update(int uid, int type) {
        //1.校验
        if(type>0){
            //2.查询
            UserPlus plus=dao.selectOne(new QueryWrapper<UserPlus>().eq("uid",uid));
            if(plus!=null){
                Calendar calendar=Calendar.getInstance();
                //3.验证当前是否到期
                if(plus.getEdate().after(new Date())){
                    //未到期
                    calendar.setTime(plus.getEdate());
                    calendar.add(Calendar.DAY_OF_MONTH,SystemConfig.map.get(type));
                    plus.setEdate(calendar.getTime());
                }else {
                    //已到期
                    plus.setSdate(new Date());
                    calendar.add(Calendar.DAY_OF_MONTH,SystemConfig.map.get(type));
                    plus.setEdate(calendar.getTime());
                }
                plus.setDays(plus.getDays()+SystemConfig.map.get(type));

                return dao.updateById(plus);
            }
        }
        return 0;
    }

    @Override
    public R query(int uid) {
        return R.ok(dao.selectOne(new QueryWrapper<UserPlus>().eq("uid",uid)));
    }
}
